Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[COZY-440] fix: 사용자 탈퇴시 탈퇴사유 요청받아서 메일 보내기 #213

Merged
merged 6 commits into from
Dec 6, 2024

Conversation

genius00hwan
Copy link
Contributor

⚒️develop의 최신 커밋을 pull 받았나요?

#️⃣ 작업 내용

사용자 탈퇴 탈퇴 사유 받아서 메일을 보냅니다
Request Body에 string 하나 추가했고 관리자에게 메일 보내는 기능을 추가했습니다.
메일 보내는 test api 하나 추가해서 메일 보내보고 @Deprecated 처리 했습니다.
관리자 토큰 만들때 cors오류 방지로 https로 바꿨습니다

동작 확인

기능을 실행했을 때 정상 동작하는지 여부를 확인하고 스샷을 올려주세요
image

💬 리뷰 요구사항(선택)

일단 메일은 제 메일을 사용하고 ses로 메일인증쪽 고도화 하면서 수정하겠습니다.

문의나, 신고도 굳이 DB에 저장할거 없이 관리자에게 메일 보내는 방식으로 수정하는게 어떨까 싶습니다. @veronees

@genius00hwan genius00hwan self-assigned this Dec 5, 2024
@genius00hwan genius00hwan added the enhancement New feature or request label Dec 5, 2024
Copy link

github-actions bot commented Dec 5, 2024

리뷰해드려요~

MailController.java

  • Review 1
  • 새로운 테스트 기능이 추가되었습니다.
  • 메일 보내기 테스트 기능은 잘 되어 있으나, 실제 테스트 메일 주소를 사용하는 것이 좋을 것 같습니다.

MailService.java

  • Review 1
  • 새로운 테스트 기능이 추가되었습니다.
  • 메일 보내기 테스트 기능은 잘 되어 있으나, 실제 테스트 메일 주소를 사용하는 것이 좋을 것 같습니다.
  • 관리자 메일 주소를 설정할 수 있는 방법이 추가되었습니다.

MemberController.java

  • Review 1
  • 회원 탈퇴 기능에 유효성 검사 요소가 추가되었습니다.

WithdrawRequestDTO.java

  • Review 1
  • 회원 탈퇴 요청 객체가 추가되었습니다.

MemberCommandService.java

  • Review 1
  • 회원 탈퇴 기능에 유효성 검사 요소가 추가되었습니다.
  • 회원 탈퇴 기능에 메일 보내기 기능이 추가되었습니다.

SwaggerFilter.java

  • Review 1
  • 쿠키 설정에 안전한 설정이 추가되었습니다.

mailService.sendCustomMailToAdmin("제목", "내용");
return ResponseEntity.ok(ApiResponse.onSuccess(true));
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

관리자에게 메일 보내는 test api 하나 만들어서 메일을 보내봤습니다. 테스트 성공후 바로 @Deprecated처리 했습니다.

throw new GeneralException(ErrorStatus._MAIL_SEND_FAIL);
}
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

관리자에게 메일 보내는 함수입니다 일단 제 개인메일주소로 메일을 보냅니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

눈꽃 요구로 cozymate0으로 수정했습니다

public record WithdrawRequestDTO(
@Length(max = 100, message = "탈퇴 사유는 최대 100자")
String withdrawReason
) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

탈퇴시 사용되는 dto입니다. 탈퇴사유는 줄글이라 body로 받습니다.

@@ -39,6 +39,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
}
Cookie cookie = new Cookie("JWT", jwtUtil.generateAdminToken()); // 쿠키 이름 및 값 설정
cookie.setHttpOnly(true); // 클라이언트 측 스크립트에서 쿠키를 접근하지 못하게 함
cookie.setSecure(true);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

관리자 토큰 발급할때 Https로 바꿉니다

Copy link

github-actions bot commented Dec 5, 2024

리뷰해드려요~

MailController.java

  • 추가: testMail() 메소드
  • 추가: Slf4j 로깅 설정
@PostMapping("/test")
@Operation(summary = "[말즈] 관리자 메일 테스트", description = "관리자에게 메일 보내기 테스트")
@Deprecated
public ResponseEntity<ApiResponse<Boolean>> testMail() {
    log.info("controller 진입 성공");
    mailService.sendCustomMailToAdmin("제목", "내용");
    return ResponseEntity.ok(ApiResponse.onSuccess(true));
}

MailService.java

  • 추가: AuthService 주입
  • 추가: ADMIN_MAIL_USERNAME, ADMIN_MAIL_DOMAIN 설정
  • 추가: sendCustomMailToAdmin() 메소드
@Value("${spring.mail.username}")
private static final String ADMIN_MAIL_USERNAME = "cozymate0";

private static final String ADMIN_MAIL_DOMAIN = "@gmail.com"; // 관리자 이메일 주소

public void sendCustomMailToAdmin(String subject, String content) {
    try {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");

        helper.setTo(ADMIN_MAIL_USERNAME + ADMIN_MAIL_DOMAIN);
        helper.setSubject(subject);
        helper.setText(content, true); // 전달받은 content를 그대로 전송
        mailSender.send(message);

    } catch (MessagingException e) {
        throw new GeneralException(ErrorStatus._MAIL_SEND_FAIL);
    }
}

MemberController.java

  • 추가: WithdrawRequestDTO 파라미터
@DeleteMapping("/withdraw")
public ResponseEntity<ApiResponse<String>> withdraw(
    @AuthenticationPrincipal MemberDetails memberDetails,
    @Valid WithdrawRequestDTO withdrawRequestDTO) {
    memberCommandService.withdraw(withdrawRequestDTO, memberDetails);

    return ResponseEntity.ok(ApiResponse.onSuccess("회원 탈퇴가 완료되었습니다."));
}

WithdrawRequestDTO.java

  • 생성: WithdrawRequestDTO 클래스
public record WithdrawRequestDTO(
    @Length(max = 100, message = "탈퇴 사유는 최대 100자")
    String withdrawReason
) {
}

MemberCommandService.java

  • 추가: MailService 주입
  • 추가: withdraw(WithdrawRequestDTO, MemberDetails) 메소드
  • 삭제: verifyMemberUniversity() 메소드
private final MailService mailService;

public void withdraw(WithdrawRequestDTO withdrawRequestDTO, MemberDetails memberDetails) {
    String withdrawReason = withdrawRequestDTO.withdrawReason();
    String mailSubject = memberDetails.member().getNickname() + "탈퇴 사유";

    mailService.sendCustomMailToAdmin(mailSubject, withdrawReason);
    memberWithdrawService.withdraw(memberDetails.member());
}

SwaggerFilter.java

  • 추가: cookie.setSecure(true);
cookie.setSecure(true);

Copy link
Member

@eple0329 eple0329 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굿

private final AuthService authService;

@Value("${spring.mail.username}")
private static final String ADMIN_MAIL_USERNAME = "cozymate0";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 @value 설정되어있는데, 값이 직접 주입되어있는건 먼가용

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메일고도화하면서 메일 주소 확정 나면 바꾸려구여

Copy link
Contributor

@jpark0506 jpark0506 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM~

Copy link
Member

@veronees veronees left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM~ 문의하기는 피그마 화면이 있어서 db 저장 필요할 거 같고, 신고는 저장 안해도 될 것 같긴한데.. 저는 저장 안할 이유도 잘 모르겠습니다. 누가 신고 몇건 들어왔는지 이런 통계를 낼 일이 생기면 db에 저장해두는게 더 편하지 않을까요?

@eple0329
Copy link
Member

eple0329 commented Dec 6, 2024

LGTM~ 문의하기는 피그마 화면이 있어서 db 저장 필요할 거 같고, 신고는 저장 안해도 될 것 같긴한데.. 저는 저장 안할 이유도 잘 모르겠습니다. 누가 신고 몇건 들어왔는지 이런 통계를 낼 일이 생기면 db에 저장해두는게 더 편하지 않을까요?

저도 마찬가지로 문의/신고 부분은 안 할 이유도 없다고 생각하기도 하고, 있는게 전체 관리하기에도 편하다고 생각합니당

@genius00hwan genius00hwan merged commit 92acacf into develop Dec 6, 2024
1 check passed
@genius00hwan genius00hwan deleted the hotfix/COZY-440 branch December 14, 2024 05:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants